import { Logger } from '@/utils/logger';

declare global {
    interface Object {
        /**
         * 一个 JSON.stringify 的简写
         * @example
         * const creep = Game.creeps['harvester'];
         * console.log(creep.json)  // {"name":"harvester","id":"..."}
         */
        readonly json: string;
    }
}

try {
    Object.defineProperty(Object.prototype, 'json', {
        get() {
            return JSON.stringify(this);
        }
    });
}
catch (e) {
    // 重复定义，直接 Game.cpu.halt 重置
    if (e instanceof Error && /property/.test(e.message)) {
        Logger.warn('无法挂载 json 拓展，自动进行 CPU reset');
        if (Game.cpu.halt)   // 兼容 sim
            Game.cpu.halt();
        else
            Logger.warn('无法自动重置，忽略')
    }
    else {
        throw e;
    }
}